package com.MoveEat.activities.adapters;

import java.util.ArrayList;

import com.MoveEat.views.MenuHandler;
import com.MoveEat.views.RestMap;

import android.os.Parcelable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;

public class AwesomePagerAdapter extends PagerAdapter
{

	private int						mCount;
	private ArrayList<MenuHandler>	mList;
	private View					mRestView;
	private RestMap					mMapView;

	public AwesomePagerAdapter(int count, ArrayList<MenuHandler> menuHandlers, View restView, RestMap mapView)
	{
		mCount = count;
		mList = menuHandlers;
		mRestView = restView;
		mMapView = mapView;
	}

	@Override
	public int getCount()
	{
		return mCount + 2;
	}

	/**
	 * Create the page for the given position. The adapter is responsible for
	 * adding the view to the container given here, although it only must ensure
	 * this is done by the time it returns from {@link #finishUpdate()}.
	 * 
	 * @param container
	 *            The containing View in which the page will be shown.
	 * @param position
	 *            The page position to be instantiated.
	 * @return Returns an Object representing the new page. This does not need
	 *         to be a View, but can be some other container of the page.
	 */
	@Override
	public Object instantiateItem(View collection, int position)
	{
		View view = null;
		if (position == 0)
		{
			view = mMapView.getView();
		}
		else if (position == 1)
		{
			view = mRestView;
		}
		else if (position>1)
		{
			view = mList.get(position-2).getView();
		}

		((ViewPager) collection).addView(view, 0);

		return view;
	}

	/**
	 * Remove a page for the given position. The adapter is responsible for
	 * removing the view from its container, although it only must ensure this
	 * is done by the time it returns from {@link #finishUpdate()}.
	 * 
	 * @param container
	 *            The containing View from which the page will be removed.
	 * @param position
	 *            The page position to be removed.
	 * @param object
	 *            The same object that was returned by
	 *            {@link #instantiateItem(View, int)}.
	 */
	@Override
	public void destroyItem(View collection, int position, Object view)
	{
		((ViewPager) collection).removeView((View) view);
	}

	@Override
	public boolean isViewFromObject(View view, Object object)
	{
		return view == ((View) object);
	}

	/**
	 * Called when the a change in the shown pages has been completed. At this
	 * point you must ensure that all of the pages have actually been added or
	 * removed from the container as appropriate.
	 * 
	 * @param container
	 *            The containing View which is displaying this adapter's page
	 *            views.
	 */
	@Override
	public void finishUpdate(View arg0)
	{
	}

	@Override
	public void restoreState(Parcelable arg0, ClassLoader arg1)
	{
	}

	@Override
	public Parcelable saveState()
	{
		return null;
	}

	@Override
	public void startUpdate(View arg0)
	{
	}

}